Starting decades ago with the mainframe computer, the first wave of the computing revolution empowered enterprises to manage huge volumes of information, fueling a massive growth in the scale of commerce worldwide. The introduction of the personal computer began the second wave of the continuing revolution, bringing the power of information creation to individuals. One factor in the growth of computing has been the development of interfaces that enabled various computer program applications to pass data to each other and otherwise communicate with each other. This inter-application or inter-computer communication is generically described as “messaging.”
Presently, networks are emerging as the third wave of the computing revolution, enabling both enterprises and the individuals to rapidly and easily communicate information throughout the world. However, a significant problem which has impeded inter-network and intra-network communication is the diversity of the interfaces, both hardware and software which have been developed throughout the years.
Recognizing this problem, representatives of major computer and telecommunication companies, beginning in 1983, developed and adopted a standard model for communication. The standard, known as OSI (Open Systems Interconnection) is used to guide product developers and manufacturers so that their products will consistently work with other products. OSI was officially adopted as an international standard by the International Organization of Standards (ISO).
The OSI model defines seven layers of functionality that takes place at each end of a communication. Although OSI is not always strictly adhered to in terms of keeping related functions together in a well-defined layer, many if not most products involved in telecommunications and messaging make an attempt to describe themselves in relation to the OSI model.
The key idea in OSI is that the process of communication between two end users in a telecommunication network can be divided into layers, with each layer adding its own set of special, related functions. The systems on each end of a communication in some manner incorporates these seven layers of function. In a given message between users there is a flow of data through each layer at one end down through the layers in the computer used by the sending user and, at the other end, when the message arrives, another flow of data up through the layers in the receiving user's computer. The actual programming and hardware that furnish these seven layers of function is usually a combination of the computer operating system, applications (such as a Web browser), Transmission Control Protocol/Internet Protocol (TCP/IP) or alternative transport and network protocols, and the software and hardware that enables the computer to physically place a signal on a hardware line attached to the computer.
The seven OSI layers are graphically illustrated in FIG. 1. The seven layers are logically divided into two groups. The lower three layers, 140-160, are used when any message passes through the host computer. The upper four layers, 110-130, are used whenever a message passes to or from an application executing on the host computer. Messages between two host computers pass through all seven layers 100-160. Messages destined for some other host (e.g., when the instant host is acting as an intermediate node in a network) are not passed up to the upper layers 100-130 but are forwarded to the host (or another intermediate node).
The seven OSI layers include an Application Layer 100; a Presentation Layer 110; a Session Layer 120; a Transport Layer 130; a Network Layer 140; a Data Link Layer 150; and a Physical Layer 160. The Application Layer 100 is the layer at which communication partners are identified, quality of service is identified, user authentication and privacy are considered, and any constraints on data syntax are identified. Note that the Application Layer 100 is not the application itself, but rather provides an interface to the user. Some applications may perform application layer functions. Some implementations of the Application Layer 100 include, but are not limited to E-mail, newsgroups, web applications, file transfers, host sessions, directory services, network management, and file services.
The Presentation Layer 110 is usually part of an operating system which converts incoming and outgoing data from one presentation format to another. For example, the Presentation Layer 110 might convert data from a text stream into a popup window. The Presentation Layer 110 is sometimes called the syntax layer. Some implementations of the Presentation Layer 100 include but are not limited to POP/SMTP, Usenet, HTTP, FTP, TelNet, DNS, SNMP, and NFS.
The Session Layer 120 sets up, coordinates, and terminates conversations, exchanges, and dialogs between the applications at each end of the communication. The Session Layer 120 sets up and manages session and connection coordination. Some implementations of the Session Layer 120 include but are not limited to POP/25, 532, 80, 20/21, 23, 53, 161/162 and RPC Portmapper.
The Transport Layer 130 manages the end-to-end control of the communication, for example, determining whether all packets have arrived and error-checking. The Transport Layer 130 ensures complete data transfer. Standards such as TCP and UDP are implementations of the Transport layer 130.
The Network Layer 140 handles the routing of the data. This routing involves sending a message in the right direction to the right destination on outgoing transmissions and receiving incoming transmissions at the packet level. The Network Layer 140 performs routing and forwarding of messages. Internet Protocol Versions 6 and 4 are implementations of the Network Layer 140. The Data Link Layer 150 provides error control and synchronization for the Physical Level 160.
The Data Link Layer 150 also furnishes transmission protocol knowledge and management. Standards such as SLIP, PPP, 802.2 SNAP, Ethernet II are implementations of the Data Link Layer 150.
The Physical Layer 160 is the layer that conveys a bit stream through the network at the electrical and mechanical level. Layer 160 provides the hardware means of sending and receiving data on a carrier. Standards for the Physical Layer include RS-X, Cat 1, ISDN, ADSL, ATM, FDDI, Cat 1-5, as well as Coaxial Cables.
Even though the adoption of the OSI model has lead to a certain level of uniformity in messaging, the diversity of the actual implementations of the model still remains a vexing problem for application programmers and system integrators. One result of this complexity is that applications have been forced to include “hardcoded” descriptions of the various other applications, platforms, formats and routing used for messaging. If any of these parameters change (e.g. a new version of an operating system) the application program must be modified, recompiled and tested. This is a huge problem in conventional messaging architectures.
Accordingly, there is a long felt need in the industry for a messaging architecture which allows diverse applications on diverse platforms to communicate with each other. Such an architecture should enable application developers to concentrate on the substance of their applications and disregard the complex physical infrastructure associated with messaging.